package com.wantup.listener;

import org.springframework.context.ApplicationListener;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.messaging.SessionConnectEvent;

/**
 * @ClassName ConnectEventListener
 * @Description websocket链接创建监听器
 * @Author zhaoluowei
 * @Date 2019/6/23  20:08
 * @Version 1.0
 *
 * sessionId 是有用的 要通过拦截器 进行获取。aop
 *
 */
@Component
public class ConnectEventListener implements ApplicationListener<SessionConnectEvent> {


    /**
     * StompHeaderAccessor 简单消息传递协议 中 处理消息头的基类。
     * 通过这个类可以获取消息类型。发布订阅、建立链接 、会话id
     *
     * @param sessionConnectEvent
     */
    @Override
    public void onApplicationEvent(SessionConnectEvent sessionConnectEvent) {
        StompHeaderAccessor accessor = StompHeaderAccessor.wrap(sessionConnectEvent.getMessage());
        System.out.println("ConnectEventListener --> 获取消息类型  "+accessor.getCommand().getMessageType());
        System.out.println("ConnectEventListener --> session标识符  "+accessor.getSessionId());
        System.out.println("ConnectEventListener --> sessionId  "+accessor.getSessionAttributes().get("sessionId"));
    }
}
